var QSSmartSealWX = require("../../../utils/QS_Minprogram_SDK_V1.0");
var qssealsdk;
var ZYRequestClient = require("../../../utils/zy-request");
var requestClient;
//定位服务
var QQMapWX = require('../../../utils/qqmap-wx-jssdk');
var qqmapsdk;
var commonUtil = require('../../../utils/util');
var socketTask;
const app = getApp();
Page({
  data:{
    // 用户id
    userId:0,
    // 启动序号
    startNo:0,
    // 启动id
    startId:0,
    // 启动印章人脸图片
    facePhoto:null,
    // 印章信息
    sealData:{
      deviceId:null,// 设备id
      sealId:0,
      sealName:"请启动印章",// 印章名称
      mac:null,// 印章MAC地址
      battery:0,// 电量
      connectStatus:false,// 连接状态,
      hasApproval:false,//是否设置审批流
      expireStatus:false,//服务费过期状态
      forcePhotograph:false,// 是否盖章强制拍照
      companyId:0,// 所属公司id
      serviceTime:null// 服务费到期时间
    },
    // 单据信息
    applyData:{
      id:0,
      reason:"暂无可用的用印单据",
      availableCount:0,
      sealId:0,
      expireTime:"无"
    },
    // 位置信息
    positionData:{
      latitude:0,
      longitude:0,
      address:"暂无位置信息！"
    },

    // 印章列表
    sealApplyList:[],

    // 搜索到的设备列表
    deviceList:[],

    // 用申请单列表
    applyList:[],

    scrollHeight:0,
    footerTop:10,

    // 搜索框显示标志位
    showSearch:false,
    // 连接设备显示标志位
    showDevice:false,
    // 用印单据显示标志位
    showApplyDialog:false,
    // 是否有审批通过显示标志位
    showBadge:false,
    // 连接成功盖章超时
    stampTimeOut:180,
    // 盖章超时定时器
    stampOverTimer:null,
    showAdminStampNotice:false,
    adminStampNotice:'',
  },
  onLoad() {
    var _this = this;
    wx.getSystemInfo({
      success: (result) => {
        let scrollHeight = result.windowHeight-290;
        _this.setData({
          scrollHeight:scrollHeight
        });
        var footerTop = scrollHeight - 354;
        if(footerTop < 10){
          footerTop = 10;
        }
        _this.setData({
          footerTop:footerTop
        });
      },
    })
    // 实例化网络请求对象
    requestClient = new ZYRequestClient();
    // 实例化地图API
    qqmapsdk = new QQMapWX({
      key: 'IARBZ-2PI6B-U56UA-NEY7Y-AKOTS-JRBHK'
    });
    var applyData = wx.getStorageSync('applyData');
    if(applyData != ''){
      _this.setData({
        applyData:applyData
      })
      wx.removeStorageSync('applyData')
    }
  },
  // 盖章动作回调
  onStampCallBack(dataResult){
    var _this = this;
    // 计算剩余次数，重置超时时间
    _this.setData({
      'applyData.availableCount':_this.data.applyData.availableCount-1,
      stampTimeOut:180
    });
    // 提示剩余次数
    if(_this.data.applyData.availableCount > 0 && _this.data.applyData.availableCount <=3){
      wx.showToast({
        title: '剩余次数' + _this.data.applyData.availableCount + '次',
        mask:true,
        duration:800
      })
    }
    // 上传盖章动作
    var stampData = {
      applyId:_this.data.applyData.id,
      startId:_this.data.startId,
      sealId:_this.data.sealData.sealId,
      startNo:_this.data.startNo,
      stampNo:dataResult.data.stampNo,
      stampTime:dataResult.data.stampTime,
    };
    requestClient.pressStamp(stampData,function(res){
        if(!res.data.success){
          // 断开连接
          _this.disconnectDevice();
          // 离线存储
          var stampStorage = wx.getStorageSync('stampStorage');
          if(stampStorage == ''){
            stampStorage = [];
            stampStorage.push(stampData);
            wx.setStorageSync('stampStorage', stampStorage);
          } else {
            stampStorage.push(stampData);
            wx.setStorageSync('stampStorage', stampStorage);
          }
          wx.showToast({
            title: '网络异常，连接已断开!',
            icon:'none'
          })
        }
    },function(){
        // 断开连接
        _this.disconnectDevice();
        // 离线存储
        var stampStorage = wx.getStorageSync('stampStorage');
        if(stampStorage == ''){
          stampStorage = [];
          stampStorage.push(stampData);
          wx.setStorageSync('stampStorage', stampStorage);
        } else {
          stampStorage.push(stampData);
          wx.setStorageSync('stampStorage', stampStorage);
        }
        wx.showToast({
          title: '网络异常，连接已断开!',
          icon:'none'
        })
    });
    // 判断剩余次数是否为0，如果剩余次数为0，则关闭连接
    if(_this.data.applyData.availableCount == 0){
      _this.disconnectDevice();
    }
  },
  // 报警事件回调
  onAlarmCallBack(dataResult){
    var _this = this;
    // 停止定时器
    if(_this.data.stampOverTimer){
      clearInterval(_this.data.stampOverTimer);
    }
    //判断报警类型
    var alarmRecordData = {};
    if(dataResult.data.alarm == 0x80){
      // 长按报警
      alarmRecordData = {
        sealId:_this.data.sealData.sealId,
        companyId:_this.data.sealData.companyId,
        type:1,
        address:_this.data.positionData.address,
        createUser:_this.data.userId,
        alarmTime:dataResult.data.alarmTime
      };
      wx.showModal({
        title:'违规盖章',
        content:'您已违规盖章！按压时间不能超过5秒！是否重新启动印章',
        confirmText:'重新启动',
        success(r){
          if(r.confirm){
            _this.connectDevice();
          } else {
            _this.disconnectDevice();
          }
        }
      })
    } else {
      // 防拆报警
      alarmRecordData = {
        sealId:_this.data.sealData.sealId,
        companyId:_this.data.sealData.companyId,
        type:2,
        alarmTime:dataResult.data.alarmTime
      };
      _this.disconnectDevice();
      wx.showModal({
        title:'防拆报警',
        content:'您的印章已被拆，请联系管理员解除报警！',
        showCancel:false,
        success(r){
          
        }
      })
    }
    // 振动提醒
    wx.vibrateLong({
      success: (res) => {},
    })
    // 上传报警数据
    requestClient.uploadAlarmRecord(alarmRecordData,function(res){},function(){});
  },
  onShow(){
    var _this = this;
    // 实例化蓝牙操作对象
    qssealsdk = QSSmartSealWX.getInstance();
    // 订阅盖章动作上传事件
    qssealsdk.subscribeStampEvent(_this.onStampCallBack);
    // 订阅报警上传事件
    qssealsdk.subscribeAlarmEvent(_this.onAlarmCallBack);
    // 上传离线数据
    _this.uploadStampStroage();
    var userInfo = wx.getStorageSync('userInfo');
    if(userInfo==''){
      wx.showModal({
        title:'未登录',
        content:'您还未授权登录哦',
        confirmText:'去授权',
        cancelText:'再想想',
        success(r){
          if(r.confirm){
            wx.navigateTo({
              url: '../../login/index',
            })
          }
        }
      })
    } else {
      _this.setData({
        userId:userInfo.id
      });
      // 创建关闭websocket
      socketTask = requestClient.connectSocket();
      socketTask.onOpen(function(){
        // 连接成功获取审批状态
        var data = {
          'userId':_this.data.userId,
          'operateType':'wait_approval'
        };
        socketTask.send({
          data:JSON.stringify(data)
        });
        // 获取可用单据
        data.operateType = "available_apply";
        socketTask.send({
          data:JSON.stringify(data)
        });
      });
      // 数据监听
      socketTask.onMessage(function(response){
        var messageData = JSON.parse(response.data);
        if(messageData.operateType == "wait_approval"){
          if(messageData.hasApproval){
            wx.showTabBarRedDot({
              index: 2,
              text: ''
            })
          } else {
            wx.removeTabBarBadge({
              index:2
            });
          }
        }
        if(messageData.operateType == "available_apply"){
          _this.setData({
            showBadge:messageData.availableApply
          });
        }
      });
    }
    // 判断是否采集了人脸
    var facePhoto = wx.getStorageSync('facePhoto');
    if(facePhoto != ''){
      _this.setData({
        facePhoto:facePhoto
      });
      _this.goStamp();
    } else {
      _this.setData({
        facePhoto:null
      });
    }
  },
  onHide(){
    var _this = this;
    _this.disconnectDevice();
    // 关闭websocket
    if(socketTask){
      socketTask.close();
      socketTask = null;
    }
  },
  // 上传离线数据
  uploadStampStroage(){
    // 上传离线数据
    var stampStorage = wx.getStorageSync('stampStorage');
    if(stampStorage){
      requestClient.storageStamp(stampStorage,function(res){
        // 上传成功，清空本地缓存
        if(res.data.success){
          wx.removeStorageSync('stampStorage');
        }
      },function(){

      });
    }
  },
  // 获取我的申请单
  getApplyList(){
    var _this = this;
    _this.setData({
      applyList:[]
    });
    // 判断是否为当前印章的管理员
    var isAdmin = requestClient.checkAdminSealPermission(_this.data.sealData.sealId);
    if(isAdmin){
      wx.showModal({
        title:'启动印章',
        content:'您是此印章的管理员，可以直接启动印章，也可以使用单据启动印章',
        confirmText:'直接启动',
        cancelText:'使用单据',
        success(r){
          if(r.confirm){
            _this.goAdminStamp();
          } else {
            _this.goApprovalStamp();
          }
        }
      })
      
    } else {
      _this.goApprovalStamp();
    }
  },
  // 管理员用印
  goAdminStamp(){
      _this.setData({
        showAdminStampNotice:true,
        adminStampNotice:'',
      });
  },
  // 审批用印
  goApprovalStamp(){
    var _this = this;
    // 获取连接的印章是否设置了审批流
    requestClient.getApprovalProcessListBySealId(_this.data.sealData.sealId,function(res){
      // 设置了审批流，加载用印单据
      if(res.data.data.length > 0){
        requestClient.getApplyAvailableList(_this.data.userId,function(resData){
            // 获取印章电子围栏
            requestClient.getElectronicFenceListBySeal(_this.data.sealData.sealId,function(resEle){
              if(resEle.data.data.length > 0){
                var elecList = resEle.data.data;
                var fromLatLng = _this.data.positionData.latitude + "," +_this.data.positionData.longitude;
                var toLatLng = "";
                for(var i=0;i<elecList.length;i++){
                  var latitude = elecList[i].latitude;
                  var longitude = elecList[i].longitude;
                  toLatLng += latitude + "," +longitude;
                  if(i < elecList.length -1){
                    toLatLng +=";";
                  }
                }
                // 调用地图api计算距离
                qqmapsdk.calculateDistance({
                  from:fromLatLng,
                  to:toLatLng,
                  success(res){
                    var res = res.result;
                    var flag = false;
                    for (var i = 0; i < res.elements.length; i++) {
                      var distance = res.elements[i].distance;
                      for(var j=0;j<elecList.length;j++){
                        // 比较距离
                        if(distance <= elecList[j].radius){
                          flag = true;
                          break;
                        }
                      }
                      if(flag){
                        break;
                      }
                    }
                    if(flag){
                      _this._showApplyDialog(resData);
                    } else {
                      wx.showModal({
                        title:'电子围栏',
                        content:'您的用印位置超过指定范围，是否查看电子围栏信息？',
                        success(r){
                          if(r.confirm){
                            wx.navigateTo({
                              url: '../workbench/electronicfence/index',
                            })
                          }
                        }
                      })
                    }
                  },
                  fail(error){
                    wx.showToast({
                      title: '距离计算错误',
                      icon:'none'
                    })
                  }
                });
              } else {
                _this._showApplyDialog(resData);
              }
            });
        })
      } else {
        wx.showModal({
          title:'没有权限',
          content:'您启动的印章和申请的印章不一致或者没有可用的审批流程，只有印章管理员可以使用！',
          showCancel:false,
          success(r){
            if(r.confirm){
              
            }
          }
        })
      }
    })
  },
  _showApplyDialog(resData){
    var _this = this;
    if(resData.data.data.length > 0){
      _this.setData({
        showApplyDialog:true,
        applyList:resData.data.data
      });
    } else {
      wx.showModal({
        title:'没有单据',
        content:'您启动的印章暂无可用的用印单据，请确认是否和申请的印章一致，是否现在去申请？',
        cancelText:'不用了',
        confirmText:'去申请',
        success(r){
          if(r.confirm){
            wx.navigateTo({
              url: '../workbench/stampapply/index',
            })
          }
        }
      })
    }
  },
  // 启动印章
  startSeal(){
    var _this = this;
    // 上传离线数据
    _this.uploadStampStroage();
    var userInfo = wx.getStorageSync('userInfo');
    // 获取默认公司
    requestClient.getUserDefaultCompany(userInfo.id,function(res){
      if(res.data.data == null){
          wx.showToast({
            title: '请完善企业信息！',
            icon:'error',
            mask:true
          })
          setTimeout(() => {
            wx.switchTab({
              url: '../contacts/index',
            })
          }, 1000);
          return;
      }
    });
    // 判断是否有蓝牙权限
    wx.getSetting({
      success(res){
        if(res.authSetting["scope.bluetooth"]){
          // 强制断开已经连接了的印章
          _this.disconnectDevice(_this.startDiscovery);
        } else {
          // 引导用户授权
          wx.authorize({
            scope: 'scope.bluetooth',
            success(){
              // 强制断开已经连接了的印章
              _this.disconnectDevice(_this.startDiscovery);
            },
            fail(){
              // 引导用户打开设置
              wx.showModal({
                title:"蓝牙权限",
                content:'需要使用您的蓝牙搜索和启动印章',
                success(r){
                  if(r.confirm){
                    wx.openSetting({
                      success(res){
                        if(res.authSetting["scope.bluetooth"]){
                          // 强制断开已经连接了的印章
                          _this.disconnectDevice(_this.startDiscovery);
                        } else {
                          wx.showToast({
                            title: '暂无蓝牙权限',
                          })
                        }
                      }
                    })
                  }
                }
              })
            }
          })
        }
      }
    })
  },
  // 开启搜索
  startDiscovery(){
    var _this = this;
    // 判断网络状态
    if(app.globalData.networkStatus){
      // 判断是否获取的位置信息
      if(app.globalData.latitude == null || app.globalData.longitude == null){
        wx.showModal({
          title:'启动失败',
          content:'暂未获取到位置信息，请退出程序重新进入！',
          showCancel:false,
          success(r){

          }
        })
        return;
      }
      if(app.globalData.address == null){
        wx.showModal({
          title:'暂未获取到地址',
          content:'请退出程序1分钟后重新进入！',
          showCancel:false,
          success(r){

          }
        })
        return;
      }
      _this.setData({
        'positionData.latitude':app.globalData.latitude,
        'positionData.longitude':app.globalData.longitude,
        'positionData.address':app.globalData.address
      });
    } else {
      wx.showToast({
        title: '请开启网络！'
      })
      return;
    }
    // 开始执行搜索
    _this.setData({
      showSearch:true,
      'sealData.deviceId':null,
    });
    // 获取我关联的印章列表
    requestClient.getSealMyList(_this.data.userId,function(res){
      _this.setData({
        sealApplyList:res.data.data
      });
      // 开始搜素印章
      setTimeout(() => {
        qssealsdk.startDiscovery(_this.onDeviceFound);
      }, 1000);
    });
  },
  // 发现设备回调
  onDeviceFound(dataResult){
    var _this = this;
    if(_this.data.sealData.deviceId != null){
      return;
    }
    // 先停止搜素
    _this.stopDiscovery();
    if(dataResult.result){
      // 赋值搜索到的印章对象
      var device = dataResult.data;
      _this.setData({
        'sealData.deviceId':device.deviceId,
        'sealData.mac':device.mac
      });
      // 判断印章是否添加
      var add = true;
      for(var i=0;i<_this.data.sealApplyList.length;i++){
        var seal = _this.data.sealApplyList[i];
        if(seal.mac == _this.data.sealData.mac){
          add = false;
          _this.setData({
            'sealData.sealId':seal.id,
            'sealData.sealName':seal.name,
            'sealData.expireStatus':seal.expireStatus,
            'sealData.forcePhotograph':seal.forcePhotograph,
            'sealData.companyId':seal.companyId,
            'sealData.serviceTime':seal.serviceTime,
          });
          break;
        }
      }
      // 如果没有添加则跳转添加页面
      if(add){
        // 根据MAC地址查找印章
        requestClient.getSealInfoByMac(_this.data.sealData.mac,function(resData){
          if(resData.data.data && resData.data.data.enableFlag){
            wx.showModal({
              title:'违规启动',
              content:'当前搜索到的印章已被其他公司绑定，是否前去查看？',
              confirmText:'查看印章',
              cancelText:'不看了',
              success(res){
                  if(res.confirm){
                    wx.navigateTo({
                      url: '../workbench/sealinfo/index?id=' + resData.data.data.id + '&editable=false',
                    })
                  }
              }
            })
          } else {
            wx.showModal({
              title:'发现新设备',
              content:'您是否要添加此印章？',
              confirmText:'去添加',
              cancelText:'不用了',
              success(r){
                if(r.confirm){
                  wx.navigateTo({
                    url: '../workbench/addseal/index',
                  })
                }
              }
            })
          }
        });
      } else {
        // 判断印章是否在当前所在的公司
        var defaultCompany = wx.getStorageSync('defaultCompany');
        if(_this.data.sealData.companyId == defaultCompany.id){
            // 显示连接设备
            _this.setData({            
              showDevice:true
            });
        } else {
          wx.showModal({
            title:'启动失败',
            content:'当前搜索到的印章不在您所在的企业，是否去查看',
            showCancel:false,
            success(r){
              if(r.confirm){
                wx.navigateTo({
                  url: '../workbench/sealinfo/index?id=' + _this.data.sealData.sealId + '&editable=false',
                })
              }
            }
          })
        }
      }
    } else {
      wx.showModal({
        title:'搜索失败',
        content:dataResult.message,
        showCancel:false,
        success(r){

        }
      })
    }
  },
  // 关闭搜索
  stopDiscovery(){
    var _this = this;
    _this.setData({
      showSearch:false
    });
    qssealsdk.stopDiscovery();
  },
  // 连接设备
  connectDevice(){
    var _this = this;
    //开始连接启动印章
    wx.showLoading({
      title: '正在启动印章',
      mask:true,
    })
    var deviceId = _this.data.sealData.deviceId;
    qssealsdk.connectDevice(deviceId,function(res){
      if(res.data.connectStatus){
        _this.setData({
          stampTimeOut:180,
          'sealData.connectStatus':true,
        });
        // 延时2秒
        setTimeout(() => {
          // 握手
          qssealsdk.handshake(_this.onHandshakeCallBack);
        }, 2000);
        // 启动盖章超时定时器
        var t = setInterval(() => {
          _this.stampOverCallBack();
        }, 1000);
        _this.setData({
          stampOverTimer:t
        });
        _this.stampOverCallBack();
      } else {
        wx.hideLoading({
          success: (res) => {},
        })
        if(_this.data.sealData.connectStatus){
            wx.showModal({
            title:'设备断开连接',
            content:'您的印章已经异常断开，用印过程中请不要手动关闭电源！',
            showCancel:false,
            success(r){
              
            }
          })
          _this.setData({
            'sealData.connectStatus':false,
          });
        }
      }
    });
    // 判断连接超时
    setTimeout(() => {
      if(!_this.data.sealData.connectStatus){
        wx.showToast({
          title: '连接超时',
          icon:'error'
        })
        _this.disconnectDevice();
      }
    }, 3000);
  },
  // 盖章超时定时器回调
  stampOverCallBack(){
    var _this = this;
    // 计算盖章超时
    var stampTimeOut = _this.data.stampTimeOut;
    _this.setData({
      stampTimeOut:stampTimeOut - 1
    });
    if(_this.data.stampTimeOut == 0){
      _this.disconnectDevice();
    }
    // 计算是否到了失效时间
    var strExpireTime = _this.data.applyData.expireTime;
    var expireTime = commonUtil.stringToDate(strExpireTime);
    var now = new Date();
    if(expireTime - now <= 0){
      _this.disconnectDevice();
    }
  },
  // 握手回调事件
  onHandshakeCallBack(dataResult){
    var _this = this;
    // 验证失败，断开连接
    if(!dataResult.result){
      _this.disconnectDevice();
      wx.showToast({
        title: dataResult.message,
        icon:'none'
      })
      return;
    }
    // 查询电量
    qssealsdk.battery(function(res){
      _this.setData({
        'sealData.battery':res.data.battery,
      });
      // 判断电量，电量过低断开连接
      if(dataResult.data.battery <=10){
        _this.disconnectDevice();
        wx.showToast({
          title:'电量：' + dataResult.data.battery + '，已低于10%,请充电后再使用!',
          icon:'none',
          duration:2000
        })
        return;
      }
      // 设置盖章超时时间为3分钟
      qssealsdk.overTime(1,6,function(res){
        if(res.result){
          // 启动印章
          var strExpireTime = _this.data.applyData.expireTime;
          var expireTime = commonUtil.stringToDate(strExpireTime);
          var count = _this.data.applyData.availableCount;
          qssealsdk.startSeal(count,expireTime,_this.onStartCallBack)
        }
      })
    })
  },
  // 电量回调事件
  onBatteryCallBack(dataResult){
    var _this = this;
    _this.setData({
      'sealData.battery':dataResult.data.battery,
    });
  },
  // 启动印章回调
  onStartCallBack(dataResult){
    var _this = this;
    // 启动失败，断开连接
    if(!dataResult.result){
      _this.disconnectDevice();
      wx.showToast({
        title: '印章启动失败!',
        icon:'none'
      })
    } else {
      wx.hideLoading({
        success: (res) => {},
      })
      // 调用接口->启动印章
      _this.setData({
        startNo:dataResult.data.startNo
      });
      var startData = {
        applyId:_this.data.applyData.id,
        facePhotoUrl:_this.data.facePhoto,
        reason:_this.data.applyData.reason,
        sealId:_this.data.sealData.sealId,
        stampUser:_this.data.userId,
        startNo:_this.data.startNo,
        stampCount:0,
        companyId:_this.data.sealData.companyId,
        latitude:_this.data.positionData.latitude,
        longitude:_this.data.positionData.longitude,
        address:_this.data.positionData.address
      };
      requestClient.startStamp(startData,function(res){
        if(res.data.success){
          wx.hideLoading({
            success: (res) => {},
          })
          wx.showToast({
            title: '启动成功!',
            icon:'sucess'
          })
          // 赋值启动序号
          _this.setData({
            startId:res.data.data
          });
        } else {
          _this.disconnectDevice();
          wx.showToast({
            title: '网络异常，启动失败!',
            icon:'none'
          })
        }
      },function(){
        _this.disconnectDevice();
        wx.showToast({
          title: '网络异常，启动失败!',
          icon:'none'
        })
      });
    }
  },
  // 断开连接
  disconnectDevice(callback){
    wx.hideLoading({
      success: (res) => {},
    })
    var _this = this;
    _this.setData({
      showDevice:false,
      showBadge:false,
      'sealData.connectStatus':false,
    });
    // 停止定时器
    if(_this.data.stampOverTimer){
      clearInterval(_this.data.stampOverTimer);
    }
    // 断开连接
    qssealsdk.disConnectDevice();
    if(callback){
      callback();
    }
  },
  // 隐藏搜索到的设备，加载和显示申请单
  bindShowApplyDialog(e){
    var _this = this;
    _this.setData({
      showDevice:false
    });
    // 判断是否已经定位
    var latitude = _this.data.positionData.latitude;
    var longitude = _this.data.positionData.longitude;
    if(parseInt(latitude) == 0 || parseInt(longitude) == 0){
      wx.showToast({
        title: '暂无获取到位置信息！',
        icon:'none',
        mask:true
      })
      return;
    }
    // 判断印章服务费是否过期
    if(_this.data.sealData.expireStatus){
      // 判断当前是否为超级管理员
      var isAdmin = requestClient.checkSuperAdmin();
      if(isAdmin){
        _this.goAdminStamp();
      } else {
        wx.showModal({
          title:'没有权限',
          content:'此印章服务费已经过期，只有超级管理员(企业创建者)才能使用！',
          showCancel:false,
          success(r){

          }
        })
      }
      // 服务费过期后不能使用印章
      // wx.showModal({
      //   title:'启动失败！',
      //   content:'印章服务费已到期:' + _this.data.sealData.serviceTime + ',您是否要去充值？',
      //   confirmText:'去充值',
      //   cancelText:'不用了',
      //   success(r){
      //     if(r.confirm){
      //       wx.navigateTo({
      //         url: '../workbench/recharge/index',
      //       })
      //     }
      //   }
      // })
    } else {
      // 判断服务费剩余时间，如果小于7天提醒充值
      var serviceTime = _this.data.sealData.serviceTime;
      serviceTime = serviceTime.replace(/-/g,"/");
      var serviceDate = new Date(serviceTime);
      var now = new Date();
      var days = parseInt((serviceDate.getTime() - now.getTime()) / (1000 * 60 * 60 * 24));
      if(days <= 7){
        if(days <= 0){
          days = "不到1天";
        }
        wx.showModal({
          title:'服务费提醒',
          content:'印章服务即将到期,剩余天数：' + days,
          confirmText:'去充值',
          cancelText:'先不用',
          success(r){
            if(r.confirm){
              wx.navigateTo({
                url: '../workbench/recharge/index',
              })
            } else {
              // 获取申请单
              _this.getApplyList();
            }
          }
        })
      } else {
          // 获取申请单
          _this.getApplyList();
      }
    }
  },
  // 选择申请单，连接印章
  bindSelectApply(e){
    var _this = this;
    _this.setData({
      showApplyDialog:false
    });
    // 读取选择的申请单
    var data = e.currentTarget.dataset.apply;
    var applyData = {
      id:data.id,
      sealId:data.sealInfo.id,
      reason:data.reason,
      availableCount:data.availableCount,
      expireTime:data.expireTime,
      stampPhotograph:data.stampPhotograph,
      facePhoto:data.facePhoto
    };
    _this.setData({
      applyData:applyData
    });
    // 对比印章是否一致
    if(_this.data.sealData.sealId != _this.data.applyData.sealId){
        wx.showModal({
          title:'连接失败',
          content:'您当前启动的印章和申请使用的印章不一致！',
          showCancel:false,
          success(r){

          }
        })
        return;
    }
    // 对比剩余次数
    if(_this.data.applyData.availableCount <=0){
      wx.showModal({
        title:'连接失败',
        content:'此单据印章已经盖完，请重新选择用印单据！',
        showCancel:false,
        success(r){

        }
      })
      return;
    }
    // 对比失效时间
    var expireTime = commonUtil.stringToDate(_this.data.applyData.expireTime);
    if(expireTime.getTime() - (new Date()).getTime() <=0){
      wx.showModal({
        title:'连接失败',
        content:'用印时间已经过期！',
        showCancel:false,
        success(r){

        }
      })
      return;
    }
    // 判断是否强制确认用印人
    if(_this.data.applyData.facePhoto){
        // 确认用印人
        wx.navigateTo({
          url: 'identity/index',
        })
    } else {
      _this.goStamp();
    }
  },
  goStamp(){
    var _this = this;
    // 判断是否盖章强制拍照
    if(_this.data.applyData.stampPhotograph){
      // 跳转盖章拍照
      _this.goStampPhoto();
    } else {
      // 提示用户是否盖章拍照
      wx.showModal({
        title:'启动印章',
        content:'您现在是否马上需要拍照盖章文件？',
        cancelText:'以后上传',
        confirmText:'立即拍照',
        success(r){
          if(r.confirm){
            // 跳转盖章拍照
            _this.goStampPhoto();
          } else {
            wx.removeStorageSync('facePhoto');
            // 连接印章
            _this.connectDevice();
          }
        }
      })
    }
  },
  // 跳转用印申请
  goApply(e){
    var _this = this;
    _this.disconnectDevice();
    wx.navigateTo({
      url: '../workbench/stampapply/index',
    })
  },
  // 跳转盖章拍照
  goStampPhoto(){
    var _this = this;
    // 获取相机权限如果用户第一次进入未授权会出现弹窗
    wx.getSetting({
    success: response => {
      if (!response.authSetting['scope.camera']) {
        wx.authorize({
          scope: 'scope.camera',
          success() {
            // 存储数据
            wx.setStorageSync('sealData', _this.data.sealData);
            wx.setStorageSync('applyData', _this.data.applyData);
            wx.setStorageSync('positionData', _this.data.positionData);
            // 跳转盖章拍照页面
            wx.redirectTo({
              url: 'stamp/index',
            })
          },
          fail() {
            wx.showModal({
              title:'获取相机',
              content:'请授权小程序的相机权限！',
              success(r){
                if(r.confirm){
                  _this.goStampPhoto();
                }
              }
            })
          }
        })
      } else {
        // 存储数据
        wx.setStorageSync('sealData', _this.data.sealData);
        wx.setStorageSync('applyData', _this.data.applyData);
        wx.setStorageSync('positionData', _this.data.positionData);
        // 跳转盖章拍照页面
        wx.redirectTo({
          url: 'stamp/index',
        })
      }
    },
    fail: res => {
    },
    complete: res => {
    },
  }) 
  },
  // 输入盖章备注 
  formStampNoticeChange(e){
    var _this = this;
    _this.setData({
      adminStampNotice:e.detail.value,
    });
  },
  // 盖章备注
  bindAdminStampNotice(e){
    var _this = this;
    if(e.detail.index == 0){
      _this.setData({
        showAdminStampNotice:false,
        adminStampNotice:'',
      });
      return;
    }
    var adminStampNotice = _this.data.adminStampNotice;
    if(adminStampNotice.trim()== ''){
      adminStampNotice = "管理员无审批用印";
    }
    // 构造管理员使用的单据
    var d = new Date();
    d.setDate(d.getDate() + 1);
    var strExpireTime = commonUtil.formatTime(d);
    var applyData = {
      id:0,
      sealId:_this.data.sealData.sealId,
      reason:adminStampNotice.trim(),
      availableCount:1000,
      expireTime:strExpireTime
    };
    _this.setData({
      applyData:applyData,
      showAdminStampNotice:false,
    });
    // 连接印章
    _this.connectDevice();
  }
})